package com.internetCafes.spms.web.sys.service;

import com.internetCafes.spms.web.sys.entity.vo.MenuNavVO;
import com.internetCafes.spms.web.sys.model.MenuInfo;

import java.util.List;
import java.util.Map;

/**
 * 菜单管理
 * 
 * @author Sunny
 * @email rekeeper2011@hotmail.com
 * @date 2019-10-29 00:11:51
 */
public interface MenuInfoService {

    /**
     * 获取用户菜单列表以及权限标签
     *
     * @param userId 用户id
     * @return 菜单列表以及权限标签
     * @author Zj
     */
    List<MenuNavVO> getUserMenuListAndPermissions(Long userId);

    /**
     * 根据父菜单，查询子菜单
     * @param parentId 父菜单ID
     * @param menuIdList  用户菜单ID
     */
    List<MenuInfo> queryListParentId(Long parentId, List<Long> menuIdList);

    /**
     * 根据父菜单，查询子菜单
     * @param parentId 父菜单ID
     */
    List<MenuInfo> queryListParentId(Long parentId);

    /**
     * 获取不包含按钮的菜单列表
     */
    List<MenuInfo> queryNotButtonList();

    /**
     * 获取用户菜单列表
     */
    List<MenuInfo> getUserMenuList(Long userId);

    /**
     * 查询菜单
     */
    MenuInfo queryObject(Long menuId);

    /**
     * 查询菜单列表
     */
    List<MenuInfo> queryList(Map<String, Object> map);

    /**
     * 查询总数
     */
    int queryTotal(Map<String, Object> map);

    /**
     * 保存菜单
     */
    void save(MenuInfo menuInfo);

    /**
     * 修改
     */
    int update(MenuInfo menuInfo);

    /**
     * 删除
     */
    void deleteBatch(Long[] menuIds);

    /**
     * 查询用户的权限列表
     */
    List<MenuInfo> queryUserList(Long userId);

    List<MenuInfo> list();

    MenuInfo getById(Long parentId);

    void updateById(MenuInfo menu);

    void delete(long menuId);
}
